#ifndef _MENUMANAGER_H
#define _MENUMANAGER_H

///////////////////////////////////////////////////////////////////////////
//																		 //
//	Author:		Michael Mozdzierz										 //
//	Date:		11/04/2014												 //
//	Purpose:	Define an object that manages menus						 //
//																		 //
///////////////////////////////////////////////////////////////////////////

#include "..\..\..\EdgeGameCore\StateMachine.h"
#include "..\..\..\EdgeGameCore\BaseGameComponent.h"

class Menu;

// an object that managess menus
class MenuManager : public BaseGameComponent
{
	// the current menu in the manager
	StateMachine activeMenu;

	// decides if fthe menu manager should be visible at all
	bool visible = false;

public:
	// create a new menu manager
	MenuManager(void);
	virtual ~MenuManager(void);

	// update the menu manager by dt seconds
	virtual void Update(float dt) override;
	// draw the menu manager
	virtual void Draw(void) override;

	/////////////////////<accessors/mutators>//////////////////////////////////////////

	Menu* getActiveMenu(void) const { return (Menu*)activeMenu.getCurrentState(); }

	void setActiveMenu(Menu* value) { activeMenu.setCurrentState((BaseGameComponent*)value); }

	bool getBlockScreen(void) const;

	bool getVisible(void) const { return visible; }

	void setVisible(bool value) { visible = value; }

	bool getLockMouse(void) const;
};

#endif